import { onMounted, reactive, ref } from "vue"
import { getUserInfo, share,showSharePage} from "../appSdk"
import utils from "../utils"
import { showSuccessToast } from "vant"
import { useStore } from "../store/useApp"

const useApp = () => {
  const app = useStore()
    const appState = reactive({
        env: utils.getOperationEnvironment(),
        show_share_indication: false
    })
    onMounted(async () => {
        
    })
    const getAppUserInfo = () => {
        return new Promise((resolve,reject) => {
            getUserInfo(
                (userInfo) => {
                    console.log('userInfo:',userInfo)
                    resolve(userInfo)
                }, 
                (error) => {
                    reject(error)
                }
            )
        })
    }
    const appShare = () => {
        return new Promise((resolve,reject) => {
            if (appState.env === 'app') {
                showSharePage(
                    {
                        title: '智启新境 穿梭寰宇 共赴数智未来',
                        desc: '入驻惊喜 臻享礼遇',
                        link: 'https://m.sda.changan.com.cn/ts1227/#/download',
                        
                        videoUrl: "",
                        thumbUrl: {
                          webUrl: "https://varwey-car.oss-cn-beijing.aliyuncs.com/topspace/2024/chess0115/share/app.jpg",
                          miniUrl: 'https://varwey-car.oss-cn-beijing.aliyuncs.com/topspace/2024/chess0115/share/app.jpg',
                        }
                    },
                    () => {
                        showSuccessToast('分享成功')
                        resolve(true)
                    },
                    (error) => {
                        console.error('share fail',error)
                    }
                )
            } else {
              app.showShareIndication(true)
              resolve(true)
            }
            
        })
        
        
        console.log(window,'windowwwww')
        // showSharePage(
        //     {
        //         title: '测试分享',
        //         desc: '测试分享描述',
        //         link: 'https://baidu.com',
        //         imageUrl: 'https://yinli-qixi-run.varwey.com/2023_ca/treasure1221/share/share_h5.jpg'
        //     },
        //     () => {
        //         console.log('share success')
        //     },
        //     (error) => {
        //         console.error('share fail',error)
        //     }
        // )
        // console.log(window,'windowwwww')
        // useShareAppMessage((res) => {
        //     return {
        //       title:  "图文详情",
        //       path: `/pages/imageDetail/index?postId=${routerPostId}`,
        //       imageUrl:
        //         "https://pre-cdn.sda.changan.com.cn/filecloud/static/cdnshamdown/preprod/54c18ab664fbf80238117edd7dbec5c5516022480923bc36ee5616580387e2ed6d8c4b71afc67f7585bccab1ebcc08b0"
        //     };
        //   })
    }
    /** 人机验证 */
    function initSlider(cb) {
        // 阻止重复加载dom
        const exist = document.getElementById(`nc`).hasChildNodes();
        if (exist) return;
        if (typeof window !== `undefined` && typeof initAliyunCaptcha === `undefined`) return;
        
        if (exist) return;
        // function (cb) {
          // 空间推理人机验initSlider证
         let captcha;
          // 绑定验证码实例函数。该函数为固定写法，无需修改
          function getInstance(instance) {
           captcha = instance;
         }
         initAliyunCaptcha({
           SceneId: 'b27hm7yz', // 场景ID。根据步骤二新建验证场景后，您可以在验证码场景列表，获取该场景的场景ID
           prefix: '2ey129', // 身份标。开通阿里云验证码2.0后，您可以在控制台概览页面的实例基本信息卡片区域，获取身份标
           mode: 'embed', // 验证码模式。popup表示要集成的验证码模式为弹出式。无需修改
           element: '#nc', //页面上预留的渲染验证码的元素，与原代码中预留的页面元素保持一致。
           button: '#btn', // 触发验证码弹窗的元素。button表示单击登录按钮后，触发captchaVerifyCallback函数。您可以根据实际使用的元素修改element的值
           immediate:true,
           captchaVerifyCallback: async (captchaVerifyParam) => {
             await cb(captchaVerifyParam)
             return {
               bizResult:true,
               captchaResult:true
             }
           }, // 业务请求(带验证码校验)回调函数，无需修改
           onBizResultCallback: (bizResult) => {
             // console.log('if else')
             if (bizResult) {
               
             } else {
       
             }
           }, // 业务请求结果回调函数，无需修改
           getInstance: getInstance, // 绑定验证码实例函数，无需修改
           slideStyle: {
             width: 360,
             height: 40,
           }, // 滑块验证码样式，支持自定义宽度和高度，单位为px。其中，width最小值为320 px
           language: 'cn', // 验证码语言类型，支持简体中文（cn）、繁体中文（tw）、英文（en）
         })
        return
        // 实例化ic对象
        AWSC.use('ic', function (state, module) {
          
          // 按压人机验证初始化
          ic = module.init({
            // 应用类型标识。它和使用场景标识（scene字段）一起决定了智能验证的业务场景与后端对应使用的策略模型。您可以在阿里云验证码控制台的配置管理页签找到对应的appkey字段值，请务必正确填写。
            appkey: appKey,
            // 使用场景标识。它和应用类型标识（appkey字段）一起决定了智能验证的业务场景与后端对应使用的策略模型。您可以在阿里云验证码控制台的配置管理页签找到对应的scene值，请务必正确填写。
            scene,
            // 声明智能验证需要渲染的目标元素ID。
            renderTo: 'sc',
            // 验证通过时会触发该回调参数。您可以在该回调参数中将会话ID（sessionId）、签名串（sig）、请求唯一标识（token）字段记录下来，随业务请求一同发送至您的服务端调用验签。
            success: function (data) {
              cb && cb(data)
              // ic.reset();
              // awscShow.value = false;
              // setTimeout(() => {
              //   router.push('/game')
              // }, 100)
            },
            // 验证失败时触发该回调参数
            fail: function (failCode) {
              console.log(failCode);
            },
            // 验证码加载异常时触发该回调参数
            error: function (errorCode) {
              console.log(errorCode);
            }
          });
        });
      };
    
    return {
        getAppUserInfo,
        appShare,
        appState,
        initSlider
    }
}

export default useApp